/**
 * @file src/main.h
 *
 * @date 28-aug-2013
 *
 * @author Youri Hoogstrate
 * @author Lisa Yu
 *
 * @section LICENSE
 * yh-kt-fold can predict RNA 2D structures including K-turns.
 * Copyright (C) 2012-2013 Youri Hoogstrate
 *
 * This file is part of yh-kt-fold.
 *
 * yh-kt-fold is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * yh-kt-fold is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 */



#ifdef HAVE_CONFIG_H
#include <config.h>
#endif



#include <ctype.h>
#include <fstream>
#include <iostream>
#include <math.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <string.h>
#include <time.h>
#include <unistd.h>

// remove them:
#include <vector>
#include <string>
#include <algorithm>



#define MAXLEN      3000												/** @todo should be solved with malloc / calloc */
#define MAXTLOOPS   30													/** @todo Should be solved with search trees / tries */
#define MAXTRILOOPS 50													/** @todo Should be solved with search trees / tries */
#define MAXKTURNS   64													/** @todo Should be solved with search trees / tries */
#define infinity    999999												/** @todo infinity is a predefined c++ value... << "INFINITY"? */

#define UNBOUND             -2
#define BOUND               -1
#define NOT_YET_CALCULATED -10											// = min(BOUND,UNBOUND)-1

#define PAIRING_AU    0													// Enum RNA pairings
#define PAIRING_CG    1
#define PAIRING_GC    2
#define PAIRING_UA    3
#define PAIRING_GU    4
#define PAIRING_UG    5
#define PAIRING_NONE -1

#define NUCLEOTIDE_A     0
#define NUCLEOTIDE_C     1
#define NUCLEOTIDE_G     2
#define NUCLEOTIDE_U     3
#define NUCLEOTIDE_NONE -1

#define FIVE_PRIME  5
#define THREE_PRIME 3

#define EPARAM_INTERIOR_LOOP_PENALTY  2
#define EPARAM_MISCLOOP_PENALTY       3
#define EPARAM_AU_PENALTY             9
#define EPARAM_GGG_U_PENALTY         10

#define KTURN__CANONICAL_PAIRING           '|'
#define KTURN__CANONICAL_OR_WOBBLY_PAIRING '+'
#define KTURN__NO_PAIRING                  ':'

#define DOTBRACKET__PAIRING_LEFT  "("
#define DOTBRACKET__PAIRING_RIGHT ")"
#define DOTBRACKET__NO_PAIRING    "."
